---
title: 分库分表
---
为什么需要分库分表，其实跟为什么需要分布式的架构是一样的，解决单机处理能力差的问题，(还可以提高可用性和可靠性)。分库分表就是由于数据库的性能不够。

如果数据库的性能足够强劲，完全能够支持流量，是不需要分库分表的。

高性能数据库集群的第一种方式是 读写分离，第二种方式是 数据分片。






分库分表虽然会连在一起说，但这是两个完全不同的概念，分库是拆分成多个数据库，分表是拆分成多个数据表。

分库很简单，常见的有几种场景，一种是按照业务来划分，比如订单库和商品库。微服务架构里面，这两个是属于不同的业务，从业务的方面把它们划分成两个库，这样两者之间是互不影响的。另外一种方式就是主从数据库了。

分表则比较复杂。

## 分表拆分方式

* 水平拆分： 每个表结构都一样，里面存放的数据是不一样的。
* 垂直拆分： 一个多字段的表拆分成多个表，比如订单表和订单详情表。

## 分库分表解决方案

* shardingsphere.apache.org : 以前的名字叫做 shardingJdbc ，对开发人员比较友好。
* www.mycat.org.cn : 一定要有一个熟悉 Mycat 的运维人员。

